Video compression refers to reducing the quantity of data used to represent video images and often combines image compression and motion compensation. A video codec is a device, or process implemented in software executed by a general purpose computing system, that enables video compression and/or decompression for digital video. Traditionally, video codecs apply various spatial and temporal transforms (such as discrete cosine transforms and the like) on the two-dimensional frames that make up a video sequence in order to reduce the raw data that must be stored on a storage medium or transmitted across a network.
A graphics processing unit or GPU (also occasionally called visual processing unit or VPU) is a specialized processor that offloads graphics rendering from the microprocessor. It is used in embedded systems, mobile phones, personal computers, workstations, and game consoles. Modern GPUs are very efficient at manipulating computer graphics, and their highly parallel structure makes them quite effective compared to general-purpose CPUs for a range of complex algorithms. Additionally, a somewhat recent concept is to use a modified form of a stream processor to allow a general purpose graphics processing unit. This concept turns the massive floating-point computational power of a modern graphics accelerator's shader pipeline into general-purpose computing power, as opposed to being hard wired solely to do graphical operations. In certain applications requiring massive vector operations, this can yield several orders of magnitude higher performance than a conventional CPU. For example, Nvidia(r) Corporation has begun releasing GPU cards that support an application programming interface (API) extension to the C programming language CUDA (“Compute Unified Device Architecture”), which allows specified functions from a normal C program to run on the GPU's stream processors. This makes C programs capable of taking advantage of a GPU's ability to operate on large matrices in parallel, while still making use of the CPU where appropriate.